#ifndef __ISTRATEGY__
#define __ISTRATEGY__
#pragma once
#include "CCGeometry.h"

using namespace   cocos2d;
class IGrid;
class IStrategy
{
public:
	IStrategy(IGrid* grid);
	virtual ~IStrategy(void);


	bool SelectCell(CCPoint point, int cellType); // return CanBeSelected
	virtual void ApplyRules();
	virtual void ApplyAIMove();

	void SetDifficultyLevel(int difficulty);
	int GetDifficultyLevel();
	void SetWinCallback(void* callback);
	void SetLoseCallback(void* callback);
protected:
	virtual void ApplyCleanRule(CCPoint point, int cellType){};
	virtual bool CanBeSelected(CCPoint point, int cellType);
	(void*) m_winCallback;
	(void*) m_loseCallback;
	int m_difficultyLevel;
	IGrid* m_grid;
};
#endif